Kernel裡面除了前述幾種物件之外,我們以下介紹其他幾種比較重要的物件,首先我們來看所謂的pipe管道,
管道主要是:提供任務之間非結構化資料的交換。
何謂非結構化的資料,定義如下(摘錄自維基百科):
非結構化數據是沒有預定義的數據模型或沒有以預定義的方式組織的信息。非結構化信息通常包含大量文本,但也可能包含諸如日期,數字和事實之類的數據。與以現場形式存儲在數據庫中或在文檔中註釋的數據相比,這導致使用傳統程序難以理解的不規則性和模糊性。
管道的用法語訊息佇列的方式類似,不同點在於:
1.管道沒有所謂的優先順序,任務先到就從管道通過
2.管道具有選擇的權利,而訊息佇列則沒有,訊息佇列要由任務優先順序來傳遞任務,管道不管任務如何,想要過的就得依照管道的規定走。
Kernel會用一個管道控制區塊(pipe control block)來管理管道,管道主要分命名與未命名的管道,其時不管命不命名,任務進入管道就是沒有甚麼優先權的問題,因此要注意的,就是如果任務具有緊急性優先性的話,最好不要使用管道,還是回去訊息佇列的方式才是正確的方式。
但是管道還是有其優點,因為沒有所謂的優先順序,因此處理速度上,就會相對比較快,如果一個管道不夠,可同時寫入多個管道,加速任務來回的速度,所以在這個優勢上,管道還是有其必要性的。